【Informatica Data Ingestion】ファイル取り込みタスクを使用してセッションログをS3に移送してみた
はじめに
こんにちは、データ事業本部の渡部です。
今回はInformaticaのData Ingestion and Replication(以降、Data Ingestion)でファイル取り込みによるセッションログの移送を試してみました。
弊社ではこれまでログ移送にはシェルスクリプトを使用していたのですが、今回Informaticaのサービスを使ってみての移送に挑戦してみます。
設定してみる
今回はセッションログファイルの移送なので、Data IngestionのFile Ingestion(ファイル取り込み)を使用します。
構成としては、SecureAgentサーバーからS3への移送となります。
Cloud Data Integrationのホーム画面で「新規」を選択して、「データ取り込みおよびレプリケーション」から「ファイル取り込みおよびレプリケーションタスク」を選択します。
なお今回移送するセッションログは、以下の記事でご紹介した命名方法を採用しています。
セッションログの名前が気になった場合は、以下記事をご参考ください。
定義
File Ingestionの設定をしていきます。
タスク名とランタイム環境を設定します。
プレフィクスはData IngestionのFileということで、dif
としております。
ソース
データ取り込み元のソース設定をします。
何個か重要な設定について解説します。
- ファイルピックアップ
${$PMSessionLogDir}
と設定しました。- これはInformaticaのシステム変数であり、「パラメータの追加」のリストから選択することが可能です。
- もちろん任意のフォルダを指定することも可能です。
- ファイルパターン
s.*(?<!_import).log$
と設定しました。- 末尾がimportとなっておらず、先頭がs始まりのセッションログを移送対象にするため、正規表現で記載しています。以下はセッションログディレクトリ配下です。
[infa@ip-10-10-0-151 logs]$ ls -la | grep s_mt_creat
-rw-r--r--. 1 infa infa 2335 Oct 25 08:38 s_mt_create_file_at_run_time_check_records_1729813090000_55_import.log
-rw-r--r--. 1 infa infa 12341 Oct 25 08:38 s_mt_create_file_at_run_time_check_records_1729813090000_55.log
-rw-r--r--. 1 infa infa 2335 Oct 25 08:42 s_mt_create_file_at_run_time_check_records_1729813333120_56_import.log
-rw-r--r--. 1 infa infa 12342 Oct 25 08:42 s_mt_create_file_at_run_time_check_records_1729813333120_56.log
-rw-r--r--. 1 infa infa 2335 Oct 25 08:49 s_mt_create_file_at_run_time_check_records_1729813788755_57_import.log
-rw-r--r--. 1 infa infa 12341 Oct 25 08:50 s_mt_create_file_at_run_time_check_records_1729813788755_57.log
-rw-r--r--. 1 infa infa 2335 Oct 25 08:19 s_mt_create_file_at_run_time_check_records_20241024191930_54_import.log
-rw-r--r--. 1 infa infa 12342 Oct 25 08:19 s_mt_create_file_at_run_time_check_records_20241024191930_54.log
- ファイルの安定性を確認
- 最終更新から10秒経過したものを移送するように設定しました。
- 更新中のファイルは移送しないようにします。
- ファイルのピックアップ後
ファイルを削除
と設定しました。- ソースファイルを移送した後の操作を設定できて、
ファイルを保持
・ファイルを削除
・ファイル名の変更
・アーカイブファイル
が選択可能です。
ターゲット
続いてデータ取り込み先のターゲット設定をします。
作成済みのS3コネクタを接続に設定しています。コネクタはバケットを指定している簡単なものです。
- フォルダパス
./sessionlog/${system.year}/${system.month}/${system.day}
と設定しました。相変わらずシステム変数を使用しています。- 相対パスで設定することが可能です。
- ファイルが存在する場合
上書き
を選択しました。- ターゲットフォルダに同名ファイルが存在する場合の操作を選択できて、
タイムスタンプ
を選択すると、サフィックスにファイル名が付与されます。
アクション
ターゲットに取り込む前にファイルへ加工処理が可能です。
今回は設定しませんでしたが、以下の操作が選択可能です。
ランタイムオプション
ここはデフォルトのまま設定します。
実行してみた
前述のとおり、末尾がimportとなっておらず、先頭がs始まりのログを移送します。
実行前の様子です。
[infa@ip-10-10-0-151 logs]$ ls -la | grep s_mt_creat
-rw-r--r--. 1 infa infa 2335 Oct 25 08:38 s_mt_create_file_at_run_time_check_records_1729813090000_55_import.log
-rw-r--r--. 1 infa infa 12341 Oct 25 08:38 s_mt_create_file_at_run_time_check_records_1729813090000_55.log
-rw-r--r--. 1 infa infa 2335 Oct 25 08:42 s_mt_create_file_at_run_time_check_records_1729813333120_56_import.log
-rw-r--r--. 1 infa infa 12342 Oct 25 08:42 s_mt_create_file_at_run_time_check_records_1729813333120_56.log
-rw-r--r--. 1 infa infa 2335 Oct 25 08:49 s_mt_create_file_at_run_time_check_records_1729813788755_57_import.log
-rw-r--r--. 1 infa infa 12341 Oct 25 08:50 s_mt_create_file_at_run_time_check_records_1729813788755_57.log
-rw-r--r--. 1 infa infa 2335 Oct 25 08:19 s_mt_create_file_at_run_time_check_records_20241024191930_54_import.log
-rw-r--r--. 1 infa infa 12342 Oct 25 08:19 s_mt_create_file_at_run_time_check_records_20241024191930_54.log
Data Ingestionを実行しました。
処理が成功すると、ジョブ履歴からは移送されたファイルや処理時間といったオペレーショナルなメタデータが確認可能です。
実際にログディレクトリを見てみると、ソースファイルが削除されています。
[infa@ip-10-10-0-151 logs]$ ls -la | grep s_mt_creat
-rw-r--r--. 1 infa infa 2335 Oct 25 08:38 s_mt_create_file_at_run_time_check_records_1729813090000_55_import.log
-rw-r--r--. 1 infa infa 2335 Oct 25 08:42 s_mt_create_file_at_run_time_check_records_1729813333120_56_import.log
-rw-r--r--. 1 infa infa 2335 Oct 25 08:49 s_mt_create_file_at_run_time_check_records_1729813788755_57_import.log
-rw-r--r--. 1 infa infa 2335 Oct 25 08:19 s_mt_create_file_at_run_time_check_records_20241024191930_54_import.log
S3にフォルダパスが作成されつつ、セッションログが移送されています。
※スクショを撮るのを忘れてしまい、別のログファイルの移送結果を貼っています。
さいごに
今回はData Ingestionのファイル取り込みでセッションログの移送を試してみました。
実はこのData Ingestion、CDIの処理時間単位でのIPU消費ではなく、データサイズ単位でのIPU消費 となります。
また大量ファイルを取り込む場合の速度も速いです。
そのためデータ加工などがなく大量データを素早く取り込みたい場合に使用を検討するとよいでしょう。
Informaticaにはセッションログの他にも多くのログファイルがあるため、移送の際はこちらの記事をご参考いただければと思います。